export default function data(value, type, formData1, config={}) {
	let formRef = config["formRef"] || 'form1';
	// console.log(22,config);
	let form1 = {};
	// 主要的信息内容区域部分
	let columns = [];
	// rules默认表单验证部分
	let rules = {};
	value.map((item, index) => {
		let {
			__vk__ = {},
			__config__ = {},
			__vModel__: key, // 字段名 = key
			style = {},  // 样式
			clearable,   // 是否可清除
			disabled,    // 是否禁用
			readonly,    // 是否只读
			placeholder, // 提示语
			maxlength,   // 最大长度
			autosize,    // 最小和最大行数
			min,         // 可被勾选的 checkbox 的最小数量
			max,         // 可被勾选的 checkbox 的最大数量
			size,        // 组件尺寸
			step,        // 步长
			range,		 // 是否为范围选择
		} = item;
		if (maxlength) maxlength = Number(item.maxlength);
		if (!key) key = "text";
		let { type, defaultProps = {} } = __vk__;
		let showWordLimit = item["show-word-limit"];
		let {
			tagIcon,        // 标签
			defaultValue,   // 默认值
			required,       // 是否必填
			label: title,   // 左侧label的title
			labelWidth,     // 左侧label的宽度
			showLabel,      // 是否显示左侧的label
			fileSize,       // 文件大小
			sizeUnit,       // MB/KB/GB等
			border,         // 边框
			optionType,     // 按钮和选项卡默认样式切换
			precision,      // 百分比组件对应的百分比值
			tips,           // 组件对应提示
			regList      //正则验证列表
		} = __config__;
		let { width } = style;
		if (!title) title = `${type}类型字段`;
		// 公共的开始-----------------------------------------------------------
		let columnsItem = {
			key,
			title,
			type,
			placeholder,
			labelWidth,
			clearable,
			disabled,
			showLabel,
		};
		// 设置默认值
		form1[key] = defaultValue;
		// 设置是否必填
		if (required || (regList && regList.length>0) ) {
			regList.map((item,index)=>{
				item.trigger='blur'
			})
			rules[key] = [
				{ required: true, message: `${title}不能为空`, trigger: "change" },
			];
			regList.map((item,index)=>{
				rules[key].push(item)
			})
		}
		// 公共的结束-----------------------------------------------------------
		if (type == "text") {
			// 设置字段规则
			columns.push({
				...columnsItem,
				showWordLimit,
				readonly,
				maxlength,
				append:item.__slot__.append,
				prepend:item.__slot__.prepend
			});
		} else if (type == "textarea") {
			// 设置字段规则
			columns.push({
				...columnsItem,
				showWordLimit,
				readonly,
				maxlength,
				autosize
			});
		} else if (type == "password") {
			columns.push({
				...columnsItem,
				showWordLimit,
				readonly,
				maxlength,
				autosize,
				append:item.__slot__.append,
				prepend:item.__slot__.prepend
			});
		} else if (type == "number2") {
			columns.push({
				...columnsItem,
				controls:true,
				type:'number',
				precision:item.precision,
				step:item.step,
				min,
				max,
				placeholder,
			});
		} else if (type == "editor") {
			columns.push({
				...columnsItem,
			});
		} else if (type == "select") {
			columns.push({
				...columnsItem,
				data: item.__slot__.options,
				multiple:item['multiple'],
				filterable:item['filterable'],
				multipleLimit:item['multipleLimit'],
				size,
				optionType
			});
		} else if (type == "cascader") {
			columns.push({
				...columnsItem,
				action:item.__config__.url,
				data:item.options,
				props:{
					list:item.props.props.list,
					value:item.props.props.value,
					label:item.props.props.label,
					children:item.props.props.children,
					multiple:item.props.props.multiple,
					checkStrictly:item.props.props.checkStrictly
				},
				showAllLevels:item.showAllLevels,
				separator:item.separator,
				filterable:item.filterable,
			});
		} else if (type == "radio") {
			columns.push({
				...columnsItem,
				data: item.__slot__.options,
				border,
				size,
				optionType
			});
		} else if (type == "checkbox") {
			let options_check = [
				{ value: 1, text: "选项1" },
				{ value: 2, text: "选项2" },
			];
			columns.push({
				...columnsItem,
				data: item.__slot__.options || options_check,
				border,
				min,
				max,
				optionType,
				size
			});
		} else if (type == "switch") {
			columns.push({
				...columnsItem,
				activeText:item['active-text'],
				inactiveText:item['inactive-text'],
				activeValue:item['active-value'],
				inactiveValue:item['inactive-value'],
				activeColor:item['active-color'],
				inactiveColor:item['inactive-color']
			});
		} else if (type == "slider") {
			columns.push({
				...columnsItem,
				min,
				max,
				step, 
				range,
				showStops:item['show-stops']
			});
		} else if (type == "time") {
			columns.push({
				...columnsItem,
				...defaultProps,
				rangeSeparator:item['range-separator'],
				startPlaceholder:item['start-placeholder'],
				endPlaceholder:item['end-placeholder'],
				valueFormat:item['value-format'],
				defaultValue:item['default-value'],
				pickerOptions:{
					format:item['value-format']
				}
			});
		} else if (type == "date") {
			columns.push({
				...columnsItem,
				...defaultProps,
				dateType:item.type,
				rangeSeparator:item['range-separator'],
				startPlaceholder:item['start-placeholder'],
				endPlaceholder:item['end-placeholder'],
			});
		} else if (type == "rate") {
			columns.push({
				...columnsItem,
				allowHalf: item["allow-half"],
				readonly,
				max,
				showText:item['show-text'],   //是否显示辅助文字,
				showScore:item['show-score'], //是否显示分数
			});
		} else if (type == "color") {
			columns.push({
				...columnsItem,
				colorFormat:item['color-format'], //颜色格式
				size,
			});
		} else if (type == "image") {
			//上传 upload
			columns.push({
				...columnsItem,
				limit: item.limit,
				listType:item['list-type'] || 'picture-card',   //默认上传的对应类型
				buttonText:item.buttonText,      //按钮的描述字段
				fileSize,       // 文件大小
				sizeUnit,       // MB/KB/GB等
			});
		} else if (type == "money") {
			columns.push({
				...columnsItem,
				showWordLimit,
				maxlength
			});
		} else if (type == "number") {
			columns.push({
				...columnsItem,
			});
		} else if (type == 'percentage'){
			columns.push({
				...columnsItem,
				precision,
				tips
			});
			form1[item.__vModel__]=Number(form1[item.__vModel__]/100)
			console.log(form1[item.__vModel__],'对应的数据可以看看')
		} else if (type == 'discount'){
			columns.push({
				...columnsItem,
				tips,
				type
			});
			form1[item.__vModel__]=Number(form1[item.__vModel__]/100)
			console.log(form1[item.__vModel__],'对应的数据可以看看')
		} else if (type == 'discount'){
			columns.push({
				...columnsItem,
				tips,
				type
			});
			form1[item.__vModel__]=Number(form1[item.__vModel__]/100)
			console.log(form1[item.__vModel__],'对应的数据可以看看')
		} else if (type == 'address'){
			columns.push({
				...columnsItem,
				tips,
				type:'address'
			});
			console.log(form1[item.__vModel__],'对应的数据可以看看')
		} else if(type=='table-select'){
			columns.push({
				key,
				title,
				type,
				multiple:true,
				type:'table-select',
				action:"admin/system/user/sys/getList",
				"columns":[
				  { key:"nickname", title:"用户昵称", type:'text', nameKey:true },
				  { key:"_id", title:"用户标识", type:'text', idKey:true },
				  { key:"mobile", title:"手机号", type:'text' },
				],
			});
			console.log(form1[item.__vModel__],'对应的数据可以看看')
		} else if(type=='group'){
			let arr=[];
			if(item.__config__.children){
				item.__config__.children.map((item2,index1)=>{
					arr.push({
						key:item2.__vModel__,
						title:item2.__config__.label,
						type:item2.__config__.tagIcon
					})
				})
			}
			columns.push({
				type:'group',
				key:"",
				title:'',
				justify:item.justify,
				align:item.align,
				columns:arr
			});
			console.log(form1[item.__vModel__],'对应的数据可以看看')
		}
		 else {
			console.log(`${item.__config__.tagIcon}为未定义类型字段`);
			columns.push({ key: "", title: "未定义类型字段", type: "" });
		}
		
	});
	columns.map((item,index)=>{
		for(let key in item){
			if(item[key] === false || item[key] === null || item[key] === "" || item[key] === undefined){
				delete item[key];
			}
		}
	})
	if (type == "normal") {
		return {
			[formRef]:{
				// 表单默认值
				data:form1,
				//表单属性
				props:{
					//表单请求地址
					action: "请替换为自己的路由地址",
					// 表单字段显示规则
					columns,
					// 表单验证规则
					rules,
					// add 代表添加 update 代表修改 可以为空
					formType: "",
					// 是否显示表单1 的弹窗
					show: false,
					// 表单是否在请求中 
					loading: false
				}
			}
		};
	} else if (type == "all") {
		return `
        <script>
          var that;        // 当前页面对象
          var vk = uni.vk; // vk实例
          export default {
            data() {
              return {
								// 表单相关开始-----------------------------------------------------------
								${formRef}:{
									// 表单请求数据，此处可以设置默认值
									data: ${JSON.stringify(form1)},
									// 表单属性   
									props:{
										// 表单提交地址
										action:'请替换自己的路由地址',
										// 表单字段显示规则
										columns: ${JSON.stringify(columns)},
										// 表单验证规则
										rules:${JSON.stringify(rules)},
										// 自定义表单类型，如：add 代表添加 update 代表修改，可以为空
										formType: "",
										// 是否显示表单的弹窗
										show: false,
										// 表单是否在请求中
										loading: false
									},
								}
								// 表单相关结束-----------------------------------------------------------
              }
            },
            // 监听-页面每次【加载时】执行(如:前进)
            onLoad(options = {}) {
              that = this;
              vk = that.vk;
              that.options = options;
              that.init(options);
            },
            created() {},
            mounted() {},
            methods: {
              // 页面数据初始化函数
              init(options) {},
							formSuccess() {
								console.log("表单提交了");
							},
							onCancel() {
								console.log("关闭了");
							},
            },
            // 监听器
            watch: {},
            // 过滤器
            filters: {},
            // 计算属性
            computed: {},
          }
        <\/script>
        `;
	} else if (type == "vkdialog") {
		let html = `
        <template>
          <view class="page-body">
          	<!-- 弹窗开始 -->
	        	<vk-data-dialog
			       v-model="${formRef}.props.show"
		         title="表单标题"
		      	 width="600px"
		         mode="form"
		        >
              <vk-data-form
								ref="${formRef}"
                v-model="${formRef}.data"
                :rules="${formRef}.props.rules"
                :action="${formRef}.props.action"
                :form-type="${formRef}.props.formType"
                :columns='${formRef}.props.columns'
                :loading.sync="${formRef}.props.loading"
                :label-width="${config["labelWidth"] || "140px"}"
								width="${config["width"] || "100%"}"
                label-position="${config["labelPosition"] || ""}"
                size="${config["size"] || "medium"}"
                :disabled="${config["disabled"] || false}"
								@success="formSuccess"
								@cancel="onCancel"
              ></vk-data-form>
          </vk-data-dialog>
		      <!-- 弹窗结束 -->
			  <el-button @click="${formRef}.props.show = true">弹窗</el-button>
         </view>
        </template>
         `;
		return html;
	} else if (type == "vkformpage") {
		let html = `
        <template>
          <view class="page-body">
						<!-- 表单开始 -->
							<vk-data-form
								ref="${formRef}"
								v-model="${formRef}.data"
								:rules="${formRef}.props.rules"
								:action="${formRef}.props.action"
								:form-type="${formRef}.props.formType"
								:columns='${formRef}.props.columns'
								:loading.sync="${formRef}.props.loading"
								:label-width="${config["labelWidth"] || "140px"}"
								width="${config["width"] || "400px"}"
								label-position="${config["labelPosition"] || ""}"
								size="${config["size"] || "medium"}"
								:disabled="${config["disabled"] || false}"
								@success="formSuccess"
								@cancel="onCancel"
							></vk-data-form>
						<!-- 表单结束 -->
					</view>
        </template>
         `;
		return html;
	}
}
